Ansible Collection
Ansibleのコレクションについて
コレクション(Collection)
Playbook、ロール、モジュール、およびプラグインを含むことができる Ansible コンテンツのディストリビューション形式
プレイブック、ロール、モジュール、プラグインについては下記を見る
取っ付きにくいけど、今まで作ったものをわかりやすく、取り回しがよく使うことができる機構
Ansible Galaxyからのインストール
$ ansible-galaxy collection install my_namespace.my_collection
$ ansible-galaxy collection install community.vmware
requirements.ymlからインストール
$ ansible-galaxy collection install -r requirements.yml
コレクションスケルトンの作成
$ ansible-galaxy collection init my_namespace.my_collection
$ ansible-galaxy collection install ansible.posix-1.0.0.tar.gz -p ./collections
カレントディレクトリに[my_namespace]/[my_collection]/[collection skeleton]が作られる。
例:
code:memo
$ ansible-galaxy collection init pogin503.dev
- Collection pogin503.dev was created successfully
$ tree pogin503/
pogin503/
`-- dev
|-- README.md
|-- docs
|-- galaxy.yml
|-- plugins
| `-- README.md
`-- roles
コレクションバスを指定してコレクションスケルトンの作成
$ ansible-galaxy collection init my_namespace.my_collection --init-path collections/ansible_collections
ansible.cfgを設定しておくと自分用のcollectionが表示される。
code:ansible.cfg
collections_path = ~/dotfiles/collections:~/.ansible/collections:/usr/share/ansible/collections
collectionの表示
$ ansible-galaxy collection list
code:memo
$ ansible-galaxy collection list
# /root/dotfiles/collections/ansible_collections
Collection Version
------------ -------
pogin503.dev 1.0.0
# /usr/lib/python3/dist-packages/ansible_collections
Collection Version
----------------------------- -------
amazon.aws 2.3.0
ansible.netcommon 2.6.1
....
$ ansible-galaxy collection list community.vmware
code:memo
$ ansible-galaxy -vvv collection list community.vmware
# /root/.local/lib/python3.11/site-packages/ansible_collections
Collection Version
---------------- -------
community.vmware 3.4.0
Galaxyにアップロードするためのコレクションアーティファクト(コレクションのtarball(tar.gz))を作成する。
$ ansible-galaxy collection build
コレクションの使い方
Ansible 2.8で導入されたcollectionsキーワードを使用する。
code:memo.yml
---
- host: all
collections:
- community.vmware
- vmware.vmware_rest
tasks:
- import_role:
name: role1
- mymodule:
option1: value
- debug:
msg: '{{ lookup("my_namespace.my_collection.lookup1", 'param1')| my_namespace.my_collection.filter1 }}'
コレクションのテスト
確認用
Q. Ansibleのコレクション
Q. コレクションのインストール
Q. コレクションのインストール(requirements.txt)
Q. コレクションの作成(スケルトンの生成)
Q. コレクションの表示
Q. コレクションパスの設定
Q. $ ansible-galaxy collection buildをすると何が起こるか
Q. コレクションの実行
Q. 特定コレクション内に新規ロールを作成
参考
コレクションの使用
コレクションの開発
関連
メモ